Quantifying and Evaluating the Space Overhead in C++ Memory Layouts
نویسندگان
چکیده
This paper develops a formalism that precisely characterizes when class tables are required for C++ memory layouts. A memory layout is a particular choice of data structures for implementing run-time support for object-oriented languages. We use this formalism and other techniques to quantify and evaluate, on a set of benchmarks, the space overhead for a set of C++ memory layouts. In particular, this paper studies the space overhead due to three language features: virtual dispatch, virtual inheritance, and dynamic typing. To date, there has been no scientific quantification or evaluation of C++ memory layouts. Our approach can help C++ implementors. This work has already influenced the memory layout design choices in the next version of IBM’s Visual Age C++ compiler. Applying our approach to a set of five benchmarks, we demonstrate that the impact of object-oriented space overhead can vary dramatically between applications (ranging from 0.42% to 99.79% for our benchmarks). In particular, applications whose object space is dominated by objects that heavily use object-oriented language features will be significantly impacted by the choice of a memory layout. The two end points in the spectrum of our memory layouts differ by at least 95% for each of our benchmarks.
منابع مشابه
A Deterministic Multiple Key Space Scheme for Wireless Sensor Networks via Combinatorial Designs
The establishing of a pairwise key between two nodes for encryption in a wireless sensor network is a challenging issue. To do this, we propose a new deterministic key pre-distribution scheme which has modified the multiple key space scheme (MKSS). In the MKSS, the authors define two random parameters to make better resilience than existing schemes. Instead of a random selection of these parame...
متن کاملEvaluation of Offset Assignment Heuristics
In digital signal processors (DSPs) variables are accessed using k address registers. The problem of finding a memory layout, for a set of variables, that minimizes the address-computation overhead is known as the General Offset Assignment (GOA) Problem. The most common approach to this problem is to partition the set of variables into k partitions and to assign each partition to an address reg...
متن کاملMPI Derived Datatypes Processing on Noncontiguous GPU-resident Data
Driven by the goals of efficient and generic communication of noncontiguous data layouts in GPU memory, for which solutions do not currently exist, we present a parallel, noncontiguous data-processing methodology through the MPI datatypes specification. Our processing algorithm utilizes a kernel on the GPU to pack arbitrary noncontiguous GPU data by enriching the datatypes encoding to expose a ...
متن کاملMinimizing Address-computation Overhead
In many digital signal processors (DSPs), variables stored in memory are accessed using address registers and indirect addressing modes. The addressing code used to access these variables can have a significant impact on code size and performance. Thus, one optimization problem DSP compilers face is the problem of minimizing address-computation overhead. This thesis identifies three problems th...
متن کاملSGX-Shield: Enabling Address Space Layout Randomization for SGX Programs
Traditional execution environments deploy Address Space Layout Randomization (ASLR) to defend against memory corruption attacks. However, Intel Software Guard Extension (SGX), a new trusted execution environment designed to serve security-critical applications on the cloud, lacks such an effective, well-studied feature. In fact, we find that applying ASLR to SGX programs raises non-trivial issu...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 1999